package com.guli.mall.pms.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import com.guli.common.valid.AddGroup;
import com.guli.common.valid.ListValid;
import com.guli.common.valid.SaveGroup;
import com.guli.common.valid.UpdateGroup;
import lombok.Data;

import javax.validation.constraints.*;

/**
 * 品牌
 * 
 * @author 罗俊华
 * @email 1007052116@qq.com
 * @date 2020-09-17 11:37:23
 */
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 品牌id
	 */
	@TableId(type = IdType.AUTO)
	@NotNull(message = "修改的时候brandId不能为空",groups = {UpdateGroup.class})
	@Null(message = "新增品牌的时候不能指定brandId",groups = {AddGroup.class})
	private Long brandId;
	/**
	 * 品牌名
	 */
	@NotBlank(groups = {AddGroup.class, SaveGroup.class})
	private String name;

	/**
	 * 品牌logo地址
	 */
	@NotBlank(groups = {AddGroup.class})
	private String logo;

	/**
	 * 介绍
	 */
	@NotBlank(groups = {AddGroup.class})
	private String descript;

	/**
	 * 显示状态[0-不显示；1-显示]
	 */
	//@TableLogic
/*	可以这样校验，但是换一种方式进行校验
	@NotNull(groups = AddGroup.class)
	@Max(value = 1,groups = {AddGroup.class,UpdateGroup.class})
	@Min(value = 0,groups = {AddGroup.class,UpdateGroup.class})*/
	@ListValid(value = {0,1},message = "状态只能是0或1",groups = {AddGroup.class,UpdateGroup.class})
	private Integer showStatus;

	/**
	 * 检索首字母
	 * 使用正则校验的时候前后不要添加斜线 regexp = "/[a-zA-Z]/"，这样校验总是失败
	 */
	@NotEmpty(groups = {AddGroup.class})
	@Pattern(regexp = "^[a-zA-Z]+$",message = "检索首字母必须是一个字母",groups = {AddGroup.class,UpdateGroup.class})
	private String firstLetter;

	/**
	 * 排序
	 * 1. 添加的时候不能为null
	 * 2. 在NotNull的前提下 @Min 才会生效
	 * 3. 如果不为null，则 AddGroup 和 UpdateGroup 下的最小值都是0
	 * 4. UpdateGroup下可以为不携带sort，但是如果携带了sort，就必须大于等于0
	 *
	 * 对于数字的判断不能使用NotEmpty
	 */
	@NotNull(groups = {AddGroup.class})
	@Min(value = 0,message = "序号不能小于0",groups = {AddGroup.class,UpdateGroup.class})
	private Integer sort;

}
